NULL (SQL)
=や<などの比較述語演算子を用いた演算に、NULLを適用すると、常に結果がunknown (undefined)になる
従って、
A = NULLはunknownだし、
NULL = NULLもunknownになる
そのため、そのクエリはエラーを返したり、想定した結果が返ってこない
例
以下のテーブルについて考える
code:sql
CREATE TABLE hoge (
id INT,aq
isX BOOLEAN -- NULLを許容するBOOLEAN
);
INSERT INTO hoge (id, isX) VALUES
(1, true), (2, true), (3, false), (4, NULL);
not trueしたときは、NULLは返ってこない
SELECT x FROM hoge WHERE NOT (isX = true)としても
結果はfalseのもののみ
他の言語だと、x = true | false | nullで、
x != trueなら
false | nullが返ってきそうだが、
そうはならない
以下の2つは、式自体がNULLになるので、何の結果も返ってこない
SELECT x FROM hoge WHERE isX = NULL
SELECT x FROM hoge WHERE isX <> NULL